/**
 * Created with IntelliJ IDEA.
 * Description:
 * User:张熳
 * Date:2025-08-07
 * Time:21:20
 */
//运算符
public class Test {
    public static void main(String[] args) {
        //条件运算符
        int a = 10 > 20 ? 10 : 20;
        System.out.println(a);

        boolean flag = (true == true) ? (true == false ? false : true ):false;
        System.out.println(flag);//true

        //表达式不能单独存在,必须要有一个变量将其接收
        //10 < 20 ? 20 : 10;
    }
    public static void main9(String[] args) {
        //移位运算符
        //无符号右移 >>>
        byte a = -1;//10000001 - 01000000
        System.out.println(a >>> 1);//2147483647
    }
    public static void main8(String[] args) {
        int a = 2;
        int b = 3;
        //按位与 &
        System.out.println(a & b);//2
        //按位或 |
        System.out.println(a | b);//3
        //按位异或 ^
        System.out.println(a ^ b);//1
        int c = 0x2;
        int d = 0x3;
        System.out.printf("%x\n",c ^ d);//1
        //按位取反 ~
        int e = 0xf;
        int f = 15;
        int g = 2;
        System.out.println(~g);
    }
    public static void main7(String[] args) {
        //位运算符
        int a = 1;
        int b = 2;
        System.out.println(a > b & 10/0 == 0);//程序抛出异常，不会出现短路
        System.out.println(a < b | 10/0 == 0);//程序抛出异常，不会出现短路
    }
    public static void main6(String[] args) {
        //逻辑非 ！
        int a = 1;
        System.out.println(!(a == 1));// a == 1 为true，取个非就是false
        System.out.println(!(a != 1));// a != 1 为false，取个非就是true

        /*System.out.println(!true);
        System.out.println(!false);*/
    }
    public static void main5(String[] args) {
        //逻辑运算符
        //逻辑与 &&
        int a = 1;
        int b = 2;
        System.out.println(a > b && a == 1);
        System.out.println(a < b && a == 2);
        System.out.println(a < b && a == 1);
        System.out.println(a > b && a == 2);

        //逻辑或 ||
        System.out.println(a > b || a == 1);
        System.out.println(a < b || a == 2);
        System.out.println(a < b || a == 1);
        System.out.println(a > b || a == 2);

        //短路求值 && ||
        System.out.println(a > b && 10/0 == 0);
        System.out.println(a < b || 10/0 == 0);

        //如果并不是&& || 的第一个为假或为真，就不会发生短路
        System.out.println(a < b && 10/0 == 0);
        System.out.println(a > b || 10/0 == 0);
    }
    public static void main4(String[] args) {
        //关系运算符  在C语言中，如果为真，用随机的非0数字表示，为假就用0表示，在java中，为真统统用ture，为假用false
        int a = 10;
        int b = 20;
        System.out.println(a == b);
        System.out.println(a != b);
        System.out.println(a < b);
        System.out.println(a > b);
        System.out.println(a <= b);
        System.out.println(a >= b);

        //在Java中，不可以这样写，会直接报错
        //System.out.println(3 < a < 5);//这个代码会先计算3<a，结果是ture，而true和5根本就无法比较，是两种不同的类型
    }
    public static void main3(String[] args) {
        //自增/自减运算符
        int a = 10;
        int b = a++;
        System.out.println(a);//11
        System.out.println(b);//10

        int c = 10;
        int d = ++c;
        System.out.println(c);//11
        System.out.println(d);//11
    }
    public static void main2(String[] args) {
        //增量运算符
        int a = 10;
        a += 1;//a = a + 1
        //1 += 2; //只有变量才可以使用该运算符，常量不可以
        System.out.println(a);

        int b = 10;
        long c = 20;
        //b = b + c;//需要进行类型转换，变成long类型
        b += c;//如果使用增量运算符，则会自动进行转换
        System.out.println(b);
    }
    public static void main1(String[] args) {
        //算术运算符
        System.out.println(5/2);//2
        System.out.println(5.0/2);
        //System.out.println(5/0);//除数不能为0
        //System.out.println(5%0);//除数不能为0

        /*System.out.println(10%3);//1
        System.out.println(-10%3);//-1*/

        //在C语言中，不能对浮点数类型取模，只能对整型取模，而在java中可以，但是没有意义，一般都是对整型取模
        System.out.println(11.5%2.0);

        //两侧操作数类型不一致时，向类型大的提升
        System.out.println(1+0.2);
    }

}
//
